package com.itcam.phaselist.arrays_;

import java.util.Arrays;
import java.util.List;

public class ArraysMethod02 {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 90, 123, 567};

        // binarySearch 二叉查找
        /**
         *  1. 使用binarySearch二叉查找
         *  2. 要求该数组是有序的
         *  3. 如果数组中不存在该元素，就返回 return-(low + 1);
         */
        int index = Arrays.binarySearch(arr, 123);
        System.out.println(index);

        // copyOf 数组元素的复制
        /**
         * 1. 从arr数组中，拷贝arr.length个元素到newArr数组中
         * 2. 如果拷贝的长度 > arr.length 就在新数组的后面增加null
         * 3. 如果拷贝长度 < 0 就抛出异常NegativeArraySizeException
         * 4. 该方法的底层使用的是System.arraycopy()
         */
        Integer[] tex = {1, 2, 90, 123, 567, 578};
        Integer[] newArr = Arrays.copyOf(arr, tex.length);
        System.out.println(Arrays.toString(newArr));

        // fill 数组元素的填充
        Integer[] num = new Integer[]{9, 3, 2};
        Arrays.fill(num, 99);
        System.out.println(Arrays.toString(num));

        // equals 比较两个数组元素内容是否完全一致
        Integer[] arr1 = {1, 2, 90, 123};
        Integer[] arr2 = {1, 2, 90, 123};
        boolean equals = Arrays.equals(arr1, arr2);
        System.out.println("equals=" + equals);

        // asList 将一组值转换成list
        /**
         *  1. asList方法，会将(2,3,4,5,6,1)数据转成一个List集合
         *  2. 返回的asList编译类型List(接口)
         *  3. asList运行类型java.util.Arrays$ArrayList, 是Arrays类的
         *      静态内部类 private static class ArrayList<E> extends AbstractList<E> implements RandomAccess
         */
        List asList = Arrays.asList(2, 3, 4, 5, 6, 1);
        System.out.println("asList = " + asList);
        System.out.println("asList的运行类型" + asList.getClass());
    }
}
